/**
 * @author  Thomas Lehmann
 * @file    StringTools.js
 *
 * Copyright (c) 2013 Thomas Lehmann
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
 * documentation files (the "Software"), to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
 * and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all copies
 * or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 * DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
var log;
var Class;

if (typeof require == 'function') {
    var ClassTools = require("./ClassTools.js");
    log      = ClassTools.log;
    Class    = ClassTools.Class;
}

var StringTools = Class({
    initialize: function() {
        log("Creating instance of StringTools");
    },

    isAlpha: function(character) {
        return (character.charCodeAt(0) >= "a".charCodeAt(0)  &&
                character.charCodeAt(0) <= "z".charCodeAt(0)) ||
               (character.charCodeAt(0) >= "A".charCodeAt(0)  &&
                character.charCodeAt(0) <= "Z".charCodeAt(0));
    },

    isDigit: function(character) {
        return "0123456789".indexOf(character) >= 0;
    },

    isSpecialCharacter: function(character) {
        return "!#?=%&/+-*;,:.<>|~^".indexOf(character) >= 0;
    },

    isBracket: function(character) {
        return "(){}[]".indexOf(character) >= 0;
    },

    startsWith: function(buffer, index, text) {
        for (var offset = 0; offset < text.length; ++offset) {
            if (index+offset >= buffer.length) {
                return false;
            }

            if (buffer[index+offset] != text[offset]) {
                return false;
            }
        }
        return true;
    }
});

if (typeof(exports) != 'undefined') {
    exports.StringTools = StringTools;
}
